﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using UIObjects.TreeViewInterfaces;
using System.Collections.ObjectModel;
using MvvmTreeView;
using System.Windows.Media.Imaging;
using System.Windows.Media;
using System.Windows.Controls;
using System.ComponentModel;
using UIObjects.DragDropInterfaces;
using AbstraX.ClientInterfaces;
using System.Diagnostics;

namespace AbstraX.ViewModels
{
    [DebuggerDisplay("{ Text }")]
    public class TreeNodeTest : ITreeNode
    {
        public event ImageAvailableHandler ImageAvailable;
        public event ImageAvailableHandler GlyphAvailable;
        public event ImageAvailableHandler LayoverImageAvailable;
        public string Text { get; set; }
        public float ChildOrdinal { get; set; }

        public TreeNodeTest(string text, float childOrdinal)
        {
            this.Text = text;
            this.ChildOrdinal = childOrdinal;
        }

        public List<string> AddNewShortCuts
        {
            get { throw new NotImplementedException(); }
        }

        public void AddNew(string shortCut)
        {
            throw new NotImplementedException();
        }

        public void DragStarting(object sender, ItemDragEventArgs e)
        {
            throw new NotImplementedException();
        }

        public void DragCompleted(object sender, ItemDragEventArgs e)
        {
            throw new NotImplementedException();
        }

        public void ItemDropped(object sender, ItemDragEventArgs e, int insertionIndex)
        {
            throw new NotImplementedException();
        }

        public void GiveFeedback(object sender, GiveFeedbackEventArgs e)
        {
            throw new NotImplementedException();
        }

        public void DragEnter(object sender, DragEventArgs e)
        {
            throw new NotImplementedException();
        }

        public void DragLeave(object sender, DragEventArgs e)
        {
            throw new NotImplementedException();
        }

        public void DragOver(object sender, DragEventArgs e)
        {
            throw new NotImplementedException();
        }

        public bool HasLayoverImage<T>(out T image)
        {
            throw new NotImplementedException();
        }

        public object BackColor
        {
            get
            {
                throw new NotImplementedException();
            }
            set
            {
                throw new NotImplementedException();
            }
        }

        public object Bounds
        {
            get { throw new NotImplementedException(); }
        }

        public bool Checked
        {
            get
            {
                throw new NotImplementedException();
            }
            set
            {
                throw new NotImplementedException();
            }
        }

        public ContextMenu ContextMenu
        {
            get
            {
                throw new NotImplementedException();
            }
            set
            {
                throw new NotImplementedException();
            }
        }

        public ITreeNode FirstNode
        {
            get { throw new NotImplementedException(); }
        }

        public string FullPath
        {
            get { throw new NotImplementedException(); }
        }

        public int ImageIndex
        {
            get
            {
                throw new NotImplementedException();
            }
            set
            {
                throw new NotImplementedException();
            }
        }

        public string ImageKey
        {
            get
            {
                throw new NotImplementedException();
            }
            set
            {
                throw new NotImplementedException();
            }
        }

        public bool IsEditing
        {
            get { throw new NotImplementedException(); }
        }

        public bool IsExpanded
        {
            get { throw new NotImplementedException(); }
        }

        public bool IsSelected
        {
            get { throw new NotImplementedException(); }
        }

        public bool IsChildrenLoaded
        {
            get { throw new NotImplementedException(); }
        }

        public void LoadChildren()
        {
            throw new NotImplementedException();
        }

        public bool? HasChildren
        {
            get { throw new NotImplementedException(); }
        }

        public bool IsVisible
        {
            get { throw new NotImplementedException(); }
        }

        public bool AllowRename
        {
            get { throw new NotImplementedException(); }
        }

        public bool AllowDrop
        {
            get { throw new NotImplementedException(); }
        }

        public ITreeNode LastNode
        {
            get { throw new NotImplementedException(); }
        }

        public int Level
        {
            get { throw new NotImplementedException(); }
        }

        public object TreeViewItem
        {
            get
            {
                throw new NotImplementedException();
            }
            set
            {
                throw new NotImplementedException();
            }
        }

        public object ItemContent
        {
            get
            {
                throw new NotImplementedException();
            }
            set
            {
                throw new NotImplementedException();
            }
        }

        public ITreeNode NextNode
        {
            get { throw new NotImplementedException(); }
        }

        public ITreeNode NextVisibleNode
        {
            get { throw new NotImplementedException(); }
        }

        public TreeNodeCollection Nodes
        {
            get { throw new NotImplementedException(); }
        }

        public ITreeNode Parent
        {
            get { throw new NotImplementedException(); }
        }

        public ITreeNode PrevNode
        {
            get { throw new NotImplementedException(); }
        }

        public ITreeNode PrevVisibleNode
        {
            get { throw new NotImplementedException(); }
        }

        public int SelectedImageIndex
        {
            get
            {
                throw new NotImplementedException();
            }
            set
            {
                throw new NotImplementedException();
            }
        }

        public string SelectedImageKey
        {
            get
            {
                throw new NotImplementedException();
            }
            set
            {
                throw new NotImplementedException();
            }
        }

        public int StateImageIndex
        {
            get
            {
                throw new NotImplementedException();
            }
            set
            {
                throw new NotImplementedException();
            }
        }

        public string StateImageKey
        {
            get
            {
                throw new NotImplementedException();
            }
            set
            {
                throw new NotImplementedException();
            }
        }

        public object Image
        {
            get { throw new NotImplementedException(); }
        }

        public object Glyph
        {
            get { throw new NotImplementedException(); }
        }

        public object LayoverImage
        {
            get { throw new NotImplementedException(); }
        }

        public object Tag
        {
            get
            {
                throw new NotImplementedException();
            }
            set
            {
                throw new NotImplementedException();
            }
        }

        public string ToolTipText
        {
            get
            {
                throw new NotImplementedException();
            }
            set
            {
                throw new NotImplementedException();
            }
        }

        public ITreeView TreeView
        {
            get { throw new NotImplementedException(); }
        }

        public void BeginEdit()
        {
            throw new NotImplementedException();
        }

        public object Clone()
        {
            throw new NotImplementedException();
        }

        public void Collapse()
        {
            throw new NotImplementedException();
        }

        public void Collapse(bool ignoreChildren)
        {
            throw new NotImplementedException();
        }

        public void EndEdit(bool cancel)
        {
            throw new NotImplementedException();
        }

        public void EnsureVisible()
        {
            throw new NotImplementedException();
        }

        public void Expand()
        {
            throw new NotImplementedException();
        }

        public void ExpandAll()
        {
            throw new NotImplementedException();
        }

        public int GetNodeCount(bool includeSubTrees)
        {
            throw new NotImplementedException();
        }

        public void Remove()
        {
            throw new NotImplementedException();
        }

        public void StartLoadImage()
        {
            throw new NotImplementedException();
        }

        public void Toggle()
        {
            throw new NotImplementedException();
        }

        public event PropertyChangedEventHandler PropertyChanged;

        public ITreeNode ShallowClone()
        {
            throw new NotImplementedException();
        }

        public ITreeNode DeepClone()
        {
            throw new NotImplementedException();
        }


        public void OnSelect()
        {
            throw new NotImplementedException();
        }


        public string SelectionStatus
        {
            get { throw new NotImplementedException(); }
        }


        public event NodeLabelEditEventHandler AfterLabelEdit;

        public event NodeLabelEditEventHandler BeforeLabelEdit;

        public EditNode AddEditNode(int imageIndex, string text)
        {
            throw new NotImplementedException();
        }

        public void FireAfterLabelEdit(string text)
        {
            throw new NotImplementedException();
        }

        public void FireBeforeLabelEdit()
        {
            throw new NotImplementedException();
        }
    }
}
